package com.campus.help.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.campus.help.entity.Secondhand;
import com.campus.help.entity.SecondhandType;
import com.campus.help.vo.SecondhandVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 二手商品服务接口
 *
 * @author campus-help
 * @since 2025-10-16
 */
public interface SecondhandService {

    /**
     * 分页查询二手商品列表
     */
    Page<SecondhandVO> getSecondhandList(
            int page,
            int size,
            String keyword,
            Long typeId,
            String location,
            BigDecimal minPrice,
            BigDecimal maxPrice,
            String condition,
            String status,
            Long schoolId
    );

    /**
     * 根据ID查询二手商品详情
     */
    SecondhandVO getSecondhandDetail(Long id);

    /**
     * 发布二手商品
     */
    Secondhand publishSecondhand(Secondhand secondhand, Long sellerId, Long schoolId);

    /**
     * 更新二手商品
     */
    Secondhand updateSecondhand(Secondhand secondhand, Long sellerId);

    /**
     * 删除二手商品
     */
    boolean deleteSecondhand(Long id, Long sellerId);

    /**
     * 下架商品
     */
    boolean offShelf(Long id, Long sellerId);

    /**
     * 上架商品
     */
    boolean onShelf(Long id, Long sellerId);

    /**
     * 标记为已售出
     */
    boolean markAsSold(Long id, Long sellerId);

    /**
     * 增加浏览次数
     */
    void incrementViewCount(Long id);

    /**
     * 增加收藏次数
     */
    void incrementFavoriteCount(Long id);

    /**
     * 减少收藏次数
     */
    void decrementFavoriteCount(Long id);

    /**
     * 获取我发布的商品列表
     */
    Page<Secondhand> getMyPublishedList(Long sellerId, int page, int size);

    /**
     * 获取热门商品列表
     */
    List<SecondhandVO> getHotSecondhandList(int limit);

    /**
     * 获取所有商品类型
     */
    List<SecondhandType> getAllTypes();
}

